var express = require('express')
// 导入 axios
var axios =  require('axios')
// 导入 mysql
var mysql = require('mysql')

// 创建数据库连接池
var pool   = mysql.createPool({
    host     : '172.17.145.161',
    user     : 'root',
    password : 'root',
    database : 'tasks'
  });



// 获取 router 对象
var router = express.Router()

// 自动登录
router.post('/login',function(req, res){
    // 获取请求参数 code
    const {code} = req.body
    console.log(code)
    // 判断是否存在 code 参数
    if(code == undefined) {
        return res.json({errMsg:"none code"})
    }
    // 请求微信服务器
    const url = `https://api.weixin.qq.com/sns/jscode2session?appid=wx6a8c0c1173a2249e&secret=a7ffe5d57ac3626736a477a21d9c1b2c&js_code=${code}&grant_type=authorization_code`
    axios.get(url)
        .then(result=>{
            // 获取 openid
            const {openid} = result.data

            // 查询数据库，判断是否存在该用户
            pool.query('select * from user where openid=?',[openid], function (error, results, fields) {
                if (error) res.status(500).json({errMsg:"database error"});
                // 获取 查询结果
                results = JSON.parse(JSON.stringify(results))
                // 判断长度是否为0 
                // 用户不存在，返回openid
                if(results.length === 0){
                    // 返回数据
                    res.json({
                        openid:openid,
                        success:false,
                        errMsg:"The user does not exist",
                        userInfo:{}
                    })                    
                }else if(results.length === 1){
                    console.log(results)
                    // 构建返回参数
                    let data = {
                        openid:results[0].openid,
                        nickName:results[0].nike_name,
                        avatarUrl:results[0].avatar_url,
                        gender:results[0].gender,
                        country:results[0].country,
                        province:results[0].province,
                        city:results[0].city,
                        language:results[0].language
                    }
                    res.json({
                        openid:openid,
                        success:true,
                        errMsg:"ok",
                        userInfo:{
                            ...data
                        }
                    })
                }
              });
        })
        .catch(error=>{
            res.status(500).json({errMsg:"server error"})
        })
})

// 注册
router.post('/register',function(req, res){
    // 获取请求参数-用户信息和openid
    const {userInfo} = req.body
    console.log(userInfo)
    // 构建数据
    let data = {
        openid:userInfo.openid,
        nike_name:userInfo.nickName,
        avatar_url:userInfo.avatarUrl,
        gender:userInfo.gender,
        country:userInfo.country,
        province:userInfo.province,
        city:userInfo.city,
        language:userInfo.language
    }
    console.log(data)
    // 将数据存入数据库
    pool.query('INSERT INTO user set ?',data,(err,result)=>{
        if(err){
            res.status(500).send("请求出错")
        }else{
            res.send("插入成功"+result)
        }
    })
})

//定义一个get输出接口，查看日程,根据id
router.get('/asd/:id',(req,res) => {
    let sql = `select * from schedule WHERE id = ${req.params.id}`;
    connection.query(sql,(err, result)=>{
        if (err) 
        {
            console.log(err);
        }else{
            //第一种方法
            var dataString = JSON.stringify(result);
            var data = JSON.parse(dataString);
            res.send(dataString) 

            //第二种方法
            // console.log(result);
            // res.json(result)
        }
        
    });
});

//定义一个get输出接口，查看全部日程
router.get('/asd',(req,res) => {
    let sql = `select * from schedule WHERE id `;
    connection.query(sql,(err, result)=>{
        if (err) 
        {
            console.log(err);
        }else{
            //第一种方法
            var dataString = JSON.stringify(result);
            var data = JSON.parse(dataString);
            res.send(dataString) 

            //第二种方法
            // console.log(result);
            // res.json(result)
        }
        
    });
});


//定义一个post接口,添加日程
router.post('/schedule/add',(req,res)=>{

    
    let date={
        type:'schrdule',
        title:'测试',
        desc:'测试备注',
        date:'2021-2-11',
        time:'2',
        circulation:'null',
        openid:'2'
    } 
    
    let sql='insert into schedule set ?';
    connection.query(sql,date,(err, result) => {
        if (err) {
            console.log(err);
            res.status(500).send("添加失败")
        }
        else{
           console.log(result);
           res.send("添加成功"+result)
        }

    }); 
});



module.exports = router
